/*
 * @Author: your name
 * @Date: 2025-08-01 10:48:55
 * @LastEditTime: 2025-09-08 21:40:30
 * @LastEditors: sympsel sympsel@outlook.com
 * @Description: In User Settings Edit
 * @FilePath: \work25_8_1\src\test.cpp
 */

#include <iostream>

#include "Date.h"

void test1() {
    for (int i = 1; i <= 12; ++i) {
        std::cout << Date::GetMonthDay(1200, i) << " ";
    }
    std::cout << Date::GetMonthDay(1201, 2) << " " << Date::GetYearDay(1201) << std::endl;
    std::cout << Date::GetMonthDay(1204, 2) << " " << Date::GetYearDay(1204) << std::endl;
    std::cout << Date::GetMonthDay(1205, 2) << " " << Date::GetYearDay(1205) << std::endl;
    std::cout << Date::GetMonthDay(1300, 2) << " " << Date::GetYearDay(1300) << std::endl;
    std::cout << Date::GetMonthDay(1301, 2) << " " << Date::GetYearDay(1301) << std::endl;
}

void test2() {
    Date d1(-1, 1, 1);
    d1.Print();
    Date d2(1, 0, 1);
    d2.Print();
    Date d3(1, 1, 0);
    d3.Print();
    Date d4(1, 1, 1);
    d4.Print();
    Date d5(1, 2, 29);
    d5.Print();
}

void test3() {
    Date d1(1, 1, 1);
    Date d2(d1);
    d1.Print();
    d2.Print();
    std::cout << &d1 << " " << &d2 << std::endl;

    Date d3 = d1;
    Date d4;
    d1 = d4 = d1;
    std::cout << &d3 << " " << &d4 << std::endl;

    d1 += 31;
    d1.Print();

    d1 = d1 + 29;
    d1.Print();

    d1 = d1 - 29;
    d1.Print();

    d1 -= 31;
    d1.Print();

    d1++.Print();
    (++d1).Print();

    d1--.Print();
    (--d1).Print();
}

void test4() {
    // Date d1(1, 1, 1);
    // Date d2(1, 1, 1);

    // Date d1(1, 1, 2);
    // Date d2(1, 1, 1);

    // Date d1(1, 1, 2);
    // Date d2(1, 1, 3);

    // Date d1(2, 1, 1);
    // Date d2(1, 2, 2);

    // Date d1(1, 3, 1);
    // Date d2(1, 1, 2);

    Date d2(1, 3, 1);
    Date d1(1, 1, 2);

    if (d1 > d2) {
        std::cout << ">" << std::endl;
    }

    if (d1 < d2) {
        std::cout << "<" << std::endl;
    }

    if (d1 == d2) {
        std::cout << "=" << std::endl;
    }

    if (d1 >= d2) {
        std::cout << ">=" << std::endl;
    }

    if (d1 <= d2) {
        std::cout << "<=" << std::endl;
    }
}

void test5() {
    Date d1(1000, 1, 1);
    d1--;
    d1.Print();

    Date d2(1000, 12, 1);
    d2--;
    d2.Print();

    Date d3(1000, 12, 31);
    (++d3).Print();

    Date d4(1000, 1, 31);
    (++d4).Print();
}

void test6() {
    Date d1(1200, 12, 12);
    Date d2(1000, 12, 31);

    std::cout << d2 - d1 << std::endl;
    std::cout << d1 - d2 << std::endl;
}

void test7() {
    Date::PrintWithWeekday(2025, 8, 3);
    Date::PrintWithWeekday(2025, 8, 4);
    Date::PrintWithWeekday(2025, 8, 5);
    Date::PrintWithWeekday(2025, 8, 6);
    Date::PrintWithWeekday(2025, 8, 7);
    Date::PrintWithWeekday(2025, 8, 8);
    Date::PrintWithWeekday(2025, 8, 9);
    Date::PrintWithWeekday(2025, 8, 10);

    Date::PrintWithWeekday(2025, 8, 2);
    Date::PrintWithWeekday(2025, 8, 1);
    Date::PrintWithWeekday(2025, 7, 31);
    Date::PrintWithWeekday(2025, 7, 30);
    Date::PrintWithWeekday(2025, 7, 29);
    Date::PrintWithWeekday(2025, 7, 28);
    Date::PrintWithWeekday(2025, 7, 27);
    Date::PrintWithWeekday(2025, 7, 26);
    
}

void test8() {
    Date d1(2020, 1, 3);
    std::cout << d1 << std::endl;
    std::cout << d1 << std::endl;

    std::cin >> d1;
    std::cout << d1;

}


int main() {
    // test1();
    // test2();
    // test3();
    // test4();
    // test5();
    // test6();
    // test7();
    test8();

    return 0;
}